/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mx.saco.dao.impl;

import com.mx.saco.dao.MenuUsuarioDAO;
import com.mx.saco.entity.PaginaXhtml;
import com.mx.saco.entity.PaginaXhtmlPadre;
import com.mx.saco.entity.Usuario;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author LY005213
 */
@Stateless
public class MenuUsuarioDAOImpl extends GeneralDAOImpl<PaginaXhtmlPadre, Long>
        implements MenuUsuarioDAO {

	@Override
	public List<PaginaXhtml> submenusAsignados(long idUsuario) {
		List<Usuario> usuarios;
		Query query= em.createNamedQuery("Usuario.findByIdUsuario").setParameter("idUsuario", idUsuario);
		usuarios=query.getResultList();
		if(usuarios!=null && usuarios.size()>0){
			Usuario u=usuarios.get(0);
			 return u.getPaginaXhtmlList();
			
		}else return null;
		
	}

	@Override
	public List<PaginaXhtmlPadre> geMenus() {
		 List<PaginaXhtmlPadre> lista = this.em.createNamedQuery("PaginaXhtmlPadre.findAll").getResultList();
	        return lista != null ? lista : null;
	}

   /* @Override
    public List<PaginaXhtmlPadre> consultaPaginasAccesiblesPorIdUsuario(Long idUsuario) {
        List<PaginaXhtmlPadre> lista = this.em.createNamedQuery("MenuUsuario.findByIdUsuario")
                .setParameter("idUsuario", idUsuario).getResultList();
        return lista != null ? lista : null;
    }

    @Override
    public boolean guardaMenuUsuario(Long idUsuario, Long idPagina) {
        Query query = em.createNativeQuery(" INSERT INTO tr_menu_usuario "
                + " (id_usuario, id_pagina) VALUES(?, ?) ");
        query.setParameter(1, idUsuario);
        query.setParameter(2, idPagina);
        return query.executeUpdate() > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    public boolean eliminarPermisosUsuario(Long idUsuario) {
        return em.createNativeQuery("DELETE FROM tr_menu_usuario "
                + " WHERE id_usuario = ?").setParameter(1, idUsuario)
                .executeUpdate() > 0 ? Boolean.TRUE : Boolean.FALSE;
    }
    
      
    @Override
     public List<PaginaXhtml> submenusAsignados(long idMenu,long idUsuario) {
         StringBuilder sql=new StringBuilder("Select t.* from tt_pagina_xhtml t ").
                  append("inner join tr_menu_usuario t2 on t2.id_pagina=t.id_pagina ")
                 .append("inner join tt_usuario t3 on t3.id_usuario=t2.id_usuario and t2.id_usuario=? ")
                 .append("where t.id_pagina_padre=?");
         return em.createNativeQuery(sql.toString(), PaginaXhtml.class)
                 .setParameter(1, idUsuario)
                 .setParameter(2, idMenu)
                 .getResultList();

     }*/

}
